package com.k8sops.backend.service;

import com.k8sops.backend.entity.Role;

import java.util.List;

/**
 * u89d2u8272u670du52a1u63a5u53e3
 */
public interface RoleService {

    /**
     * u521bu5efau89d2u8272
     * @param role u89d2u8272u4fe1u606f
     * @return u521bu5efau7684u89d2u8272u4fe1u606f
     */
    Role createRole(Role role);

    /**
     * u66f4u65b0u89d2u8272
     * @param role u89d2u8272u4fe1u606f
     * @return u66f4u65b0u540eu7684u89d2u8272u4fe1u606f
     */
    Role updateRole(Role role);

    /**
     * u5220u9664u89d2u8272
     * @param roleId u89d2u8272ID
     * @return u662fu5426u5220u9664u6210u529f
     */
    boolean deleteRole(Long roleId);

    /**
     * u6839u636eIDu83b7u53d6u89d2u8272u4fe1u606f
     * @param roleId u89d2u8272ID
     * @return u89d2u8272u4fe1u606f
     */
    Role getRoleById(Long roleId);

    /**
     * u6839u636eu89d2u8272u4ee3u7801u83b7u53d6u89d2u8272u4fe1u606f
     * @param roleCode u89d2u8272u4ee3u7801
     * @return u89d2u8272u4fe1u606f
     */
    Role getRoleByCode(String roleCode);

    /**
     * u83b7u53d6u6240u6709u89d2u8272
     * @return u89d2u8272u5217u8868
     */
    List<Role> getAllRoles();

    /**
     * u83b7u53d6u53efu64cdu4f5cu7684u89d2u8272u5217u8868uff08isOperation=trueuff09
     * @return u89d2u8272u5217u8868
     */
    List<Role> getOperationRoles();

    /**
     * u83b7u53d6u7528u6237u7684u89d2u8272u5217u8868
     * @param userId u7528u6237ID
     * @return u89d2u8272u5217u8868
     */
    List<Role> getUserRoles(Long userId);

    /**
     * u5206u914du83dcu5355u6743u9650u7ed9u89d2u8272
     * @param roleId u89d2u8272ID
     * @param menuIds u83dcu5355IDu5217u8868
     * @return u662fu5426u5206u914du6210u529f
     */
    boolean assignMenusToRole(Long roleId, List<Long> menuIds);

    /**
     * u5206u914du89d2u8272u7ed9u7528u6237
     * @param userId u7528u6237ID
     * @param roleIds u89d2u8272IDu5217u8868
     * @return u662fu5426u5206u914du6210u529f
     */
    boolean assignRolesToUser(Long userId, List<Long> roleIds);
}
